home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d17 / pslabel.arc / PSLABEL.PAS < prev    next >
Pascal/Delphi Source File  |  1986-11-08  |  5KB  |  161 lines

  1. program PrintPS;  { print a graphic on labels }
  2.    { All commands are for an Epson FX-185 printer }
  3.  
  4. { Copyright (c) 1986   Clint Hastings - Salt Lake City, Utah }
  5. { Permission granted for all use of a non-commercial nature. }
  6.  
  7. type  CPUreg = record  case boolean of
  8.                  false: (ax,bx,cx,dx,bp,si,di,ds,es,flags : integer);
  9.                  true:  (al,ah,bl,bh,cl,ch,dl,dh          : byte)
  10.                end;
  11.       PSpic = array[0..51,0..10] of byte;
  12.  
  13. { the lines can be spaced to suit your needs but they aren't full-height
  14.   lines, so don't use them all. These are the default lines - just hit
  15.   <RETURN> instead of typing in new lines. }
  16.  
  17. const LabelLine : array[0..17] of string[40] =
  18.                  ('',
  19.                   '',
  20.                   '         Default Lines are in the',
  21.                   '',
  22.                   '',
  23.                   '',
  24.                   '         program. Put your address',
  25.                   '',
  26.                   '',
  27.                   '',
  28.                   '         there to avoid retyping.',
  29.                   '',
  30.                   '',
  31.                   '',
  32.                   '',
  33.                   '',
  34.                   '',
  35.                   '');
  36.  
  37. var  reg : CPUreg;
  38.      filename : string[80];
  39.      g, n, Graphic, NumLabels,
  40.      Col, Row, x, len1, len2 : integer;
  41.      pf : file of PSpic;
  42.      pic : PSpic;
  43.      FileDrive, sameG : string[1];
  44.      same : boolean;
  45.  
  46. procedure PrintPSGraphic(n : integer);
  47. const BitMask : array[0..7] of byte =
  48.            ($80, $40, $20, $10, 8, 4, 2, 1);
  49.  
  50. var  TempY : array[0..3] of byte;
  51.      temp,b : byte;
  52.      buf : array[0..127] of byte;
  53.      BufPtr, step, y, x, p, i, j : integer;
  54.      ch : char;
  55.  
  56. begin
  57.   for y := 0 to 12 do BEGIN       { 52 dots @ 4 dots per row = 13 rows }
  58.   if LabelLine[y] <> '' then
  59.       write(lst,LabelLine[y],#13);
  60.     write(lst,#27'L',chr(len1),chr(len2));
  61.     for x := 0 to 10 do BEGIN
  62.            for i := 0 to 3 do  { get next line }
  63.               TempY[i] := pic[ y*4+i, x];
  64.            for j := 0 to 7 do BEGIN
  65.              temp := 0;
  66.              for i := 0 to 3 do
  67.                if (TempY[i] AND (1 shl (7-j)) ) <> 0 then
  68.                    temp := temp + (1 shl (3-i));
  69.              write(lst,chr(temp))
  70.              END;
  71.       END;
  72.     writeln(lst)
  73.     END;
  74.   for y := 13 to 17 do BEGIN     { spacing for next label }
  75.       if LabelLine[y] <> '' then
  76.           write(lst,LabelLine[y],#13);
  77.     writeln(lst)
  78.     END;
  79.   if not same then read(pf,pic);  { if not all the same graphic, }
  80. end;                              { then fetch the next one here }
  81.  
  82. procedure InfoScreen;
  83. begin
  84.   gotoxy(3,1);
  85.   writeln('Copyright (c) 1986 - Clint Hastings - Salt Lake City, Utah');
  86.   gotoxy(5,3);
  87.   writeln('**********  PRINTSHOP  LABEL  MAKER  ****************');
  88.   writeln;
  89.   writeln('    This program lets you print mailing labels using');
  90.   writeln('    PrintShop graphics for decoration. You can print');
  91.   writeln('    as many labels as you want. The graphic can be the');
  92.   writeln('    same on each label, or can move sequentially through');
  93.   writeln('    the graphic file starting at a given graphic. It can');
  94.   writeln('    use the default graphic files - hit <RETURN> in response');
  95.   writeln('    to graphic file?. You can use the library disk by typing');
  96.   writeln('    1 or 2. Graphic file drive - type A,B,C, etc., but no');
  97.   writeln('    colon is necessary.    Have fun!!!');
  98.   writeln('NOTE:');
  99.   writeln('    Printer codes are for Epson FX printers. Source code');
  100.   writeln('    in Turbo Pascal is provided for you to make necessary');
  101.   writeln('    changes for other printers.');
  102.   writeln;
  103.   writeln
  104. end;
  105.  
  106. procedure Setup;
  107. var  line : string[40];
  108. begin
  109.   write(lst,#27'A'#4);     { 4 dots high - line spacing }
  110.   len1 := (11*8) mod 256;  { calculate number of dots per line }
  111.   len2 := (11*8) div 256;
  112.  
  113.   InfoScreen;
  114.  
  115.   writeln('    PRINTSHOP LABEL MAKER');
  116.   write(#13#10'    Number of Labels to print ? ');
  117.   readln(NumLabels);
  118.   write(#13#10'    Starting graphic # to print ? ');
  119.   readln(Graphic);
  120.   Graphic := Graphic - 1;
  121.   write(#13#10'    Graphic file (0,1,2) ? ');
  122.   readln(FileName);
  123.   write(#13#10'    Graphic file drive ? ');
  124.   readln(FileDrive);
  125.   if FileName = '' then  FileName := FileDrive + ':' + 'GrData.Dat'
  126.                    else  FileName := FileDrive + ':GrLib' + FileName + '.dat';
  127.  
  128.   assign(pf,FileName);
  129.   {$I-}  reset(pf);  {$I+}
  130.   if IOresult <> 0 then HALT;
  131.  
  132.   seek(pf,Graphic);
  133.   read(pf,pic);
  134.  
  135.   writeln;
  136.   writeln('3 label lines :');
  137.   write('    ');
  138.   readln(line);
  139.   if line <> '' then BEGIN
  140.       LabelLine[2] := '         ' + line;
  141.       readln(line);
  142.       LabelLine[6] := '         ' + line;
  143.       readln(line);
  144.       LabelLine[10] := '         ' + line;
  145.       END;
  146.   write('All the same graphic (y/n) ? ');
  147.   readln(sameG);
  148.   same := (sameG <> 'n') and (sameG <> 'N');
  149. end;
  150.  
  151. begin
  152.   ClrScr;
  153.   Setup;
  154.  
  155.   for n := Graphic to Graphic-1+NumLabels do  PrintPSGraphic(n);
  156.  
  157.   close(pf);
  158.   write(lst,#27'2');  { restore regular line spacing }
  159. end.
  160.  
  161.